#pragma once

#include "PublicInterfaces\{FAFD3CB8-FCF3-46EE-B32E-45A4FF68073E}\IImageComputeFn.h"
#include "PublicInterfaces\{FAFD3CB8-FCF3-46EE-B32E-45A4FF68073E}\IImageComputeFnDef.h"
#include "PublicInterfaces\{FAFD3CB8-FCF3-46EE-B32E-45A4FF68073E}\IImageComputeFnCall.h"


class ClosingImage: public IImageComputeFnCall
{
public:
	ClosingImage(void);
	~ClosingImage(void);

	virtual bool		MXSTDMETHOD Invoke(IImageComputeFn *fn, bool DebugMode, bool DisplayMsg);

	virtual bool		MXSTDMETHOD IsValid() { return true; }

	virtual long		MXSTDMETHOD DestroyPtr(void);
	virtual long		MXSTDMETHOD DuplicatePtr(void);
	virtual void *		MXSTDMETHOD Dynamic_cast(const GUID IId);
	virtual const GUID  MXSTDMETHOD GetInterfaceGUID(void)  { return IImageComputeFnCallIID::Guid(); }				//Library Interface GUID implemented by Plugin$MxName$.dll
	virtual const char *MXSTDMETHOD GetInterfaceName(void) { return IImageComputeFnCallIID::Name(); }				//Library Interface Name implemented by Plugin$MxName$.dll

private: 
			bool		MXSTDMETHOD Closing(const char *srcImagePathFilename, const char *destImagePathFilename, int erosionElement, int erosionSize);
private: 
	long _refCnt;

};

